home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / SYSUTIL0.I < prev    next >
Encoding:
Modula Implementation  |  1990-05-13  |  5.8 KB  |  260 lines

  1. IMPLEMENTATION MODULE SysUtil0;
  2. (*$C+,L-,N+*)
  3.  
  4. (*$Y+*)
  5. FROM SYSTEM IMPORT ASSEMBLER;
  6.  
  7. FROM SYSTEM IMPORT BYTE, WORD, LONGWORD, ADDRESS;
  8.  
  9. FROM MOSGlobals IMPORT Overflow;
  10.  
  11. PROCEDURE ClearVar ( VAR data: ARRAY OF BYTE );
  12.   BEGIN
  13.     ASSEMBLER
  14.         MOVE.W  -(A3),D0
  15.         MOVE.L  -(A3),A0
  16.      L: CLR.B   (A0)+
  17.         DBRA    D0,L
  18.     END
  19.   END ClearVar;
  20.  
  21. PROCEDURE VarCleared ( REF data: ARRAY OF BYTE ): BOOLEAN;
  22.   BEGIN
  23.     ASSEMBLER
  24.         MOVE.W  -(A3),D0
  25.         MOVE.L  -(A3),A0
  26.      L: TST.B   (A0)+
  27.         DBNE    D0,L
  28.         SEQ     D0
  29.         ANDI    #1,D0
  30.         MOVE    D0,(A3)+
  31.     END
  32.   END VarCleared;
  33.  
  34. PROCEDURE VarEqual ( REF data1, data2: ARRAY OF BYTE ): BOOLEAN;
  35.   BEGIN
  36.     ASSEMBLER
  37.         MOVE.W  -(A3),D0
  38.         MOVE.L  -(A3),A0
  39.         MOVE.W  -(A3),D1
  40.         MOVE.L  -(A3),A1
  41.         CMP.W   D0,D1
  42.         BNE     E
  43.      L: CMPM.B  (A0)+,(A1)+
  44.         DBNE    D0,L
  45.         SEQ     D0
  46.         ANDI    #1,D0
  47.         MOVE    D0,(A3)+
  48.         RTS
  49.      E: CLR     (A3)+
  50.     END
  51.   END VarEqual;
  52.  
  53. PROCEDURE SwapVar ( VAR data1, data2: ARRAY OF BYTE );
  54.   BEGIN
  55.     ASSEMBLER
  56.         MOVE.W  -(A3),D0
  57.         MOVE.L  -(A3),A0
  58.         MOVE.W  -(A3),D1
  59.         MOVE.L  -(A3),A1
  60.         CMP.W   D0,D1
  61.         BEQ     L
  62.         TRAP    #6
  63.         DC.W    Overflow
  64.         RTS
  65.      L: MOVE.B  (A0),D1
  66.         MOVE.B  (A1),(A0)+
  67.         MOVE.B  D1,(A1)+
  68.         DBRA    D0,L
  69.     END
  70.   END SwapVar;
  71.  
  72. PROCEDURE CopyVar ( REF data1: ARRAY OF BYTE; VAR data2: ARRAY OF BYTE; VAR ok: BOOLEAN );
  73.   BEGIN
  74.     ASSEMBLER
  75.         MOVE.L  -(A3),A2
  76.         MOVE.W  -(A3),D1
  77.         MOVE.L  -(A3),A1        ; DEST
  78.         MOVE.W  -(A3),D0
  79.         MOVE.L  -(A3),A0        ; SOURCE
  80.         MOVE.W  #1,(A2)
  81.         CMP.W   D0,D1
  82.         BEQ     L
  83.         BHI     C
  84.         MOVE    D1,D0
  85.      C: CLR.W   (A2)
  86.      L: MOVE.B  (A0)+,(A1)+
  87.         DBRA    D0,L
  88.     END
  89.   END CopyVar;
  90.  
  91. PROCEDURE Peek ( addr: ADDRESS ): CARDINAL;
  92.   BEGIN
  93.     ASSEMBLER
  94.         MOVE.L  -(A3),A0
  95.         CLR     D0
  96.         MOVE.B  (A0),D0
  97.         MOVE    D0,(A3)+
  98.     END
  99.   END Peek;
  100.  
  101. PROCEDURE Poke ( addr: ADDRESS; value: WORD );
  102.   BEGIN
  103.     ASSEMBLER
  104.         MOVE.W  -(A3),D0
  105.         MOVE.L  -(A3),A0
  106.         MOVE.B  D0,(A0)
  107.     END
  108.   END Poke;
  109.  
  110.  
  111. PROCEDURE Byte ( value: WORD ): BYTE;
  112.   BEGIN
  113.     ASSEMBLER
  114.         MOVE.B  -1(A3),-2(A3)
  115.     END
  116.   END Byte;
  117.  
  118. PROCEDURE Cardinal ( value: BYTE ): CARDINAL;
  119.   BEGIN
  120.     ASSEMBLER
  121.         SUBQ.L  #1,A3
  122.         CLR     D0
  123.         MOVE.B  -(A3),D0
  124.         MOVE    D0,(A3)+
  125.     END
  126.   END Cardinal;
  127.  
  128. PROCEDURE InByte ( bitNo: CARDINAL; value: BYTE ): BOOLEAN;
  129.   BEGIN
  130.     ASSEMBLER
  131.         MOVEQ   #0,D2
  132.         SUBQ.L  #1,A3
  133.         MOVE.B  -(A3),D0
  134.         MOVE.W  -(A3),D1
  135.         CMPI    #7,D1
  136.         BHI     err
  137.         BTST    D1,D0
  138.         SNE     D2
  139.         ANDI    #1,D2
  140.       err:
  141.         MOVE    D2,(A3)+
  142.     END
  143.   END InByte;
  144.  
  145. PROCEDURE InWord ( bitNo: CARDINAL; value: WORD ): BOOLEAN;
  146.   BEGIN
  147.     ASSEMBLER
  148.         MOVEQ   #0,D2
  149.         MOVE.W  -(A3),D0
  150.         MOVE.W  -(A3),D1
  151.         CMPI    #15,D1
  152.         BHI     err
  153.         BTST    D1,D0
  154.         SNE     D2
  155.         ANDI    #1,D2
  156.       err:
  157.         MOVE    D2,(A3)+
  158.     END
  159.   END InWord;
  160.  
  161. PROCEDURE InLong ( bitNo: CARDINAL; value: LONGWORD ): BOOLEAN;
  162.   BEGIN
  163.     ASSEMBLER
  164.         MOVEQ   #0,D2
  165.         MOVE.L  -(A3),D0
  166.         MOVE.W  -(A3),D1
  167.         CMPI    #31,D1
  168.         BHI     err
  169.         BTST    D1,D0
  170.         SNE     D2
  171.         ANDI    #1,D2
  172.       err:
  173.         MOVE    D2,(A3)+
  174.     END
  175.   END InLong;
  176.  
  177. PROCEDURE BIncl ( VAR value: BYTE; bitNo: CARDINAL );
  178.   BEGIN
  179.     ASSEMBLER
  180.         MOVE.W  -(A3),D1
  181.         MOVE.L  -(A3),A0
  182.         CMPI    #7,D1
  183.         BHI     err
  184.         BSET    D1,(A0)
  185.       err:
  186.     END
  187.   END BIncl;
  188.  
  189. PROCEDURE WIncl ( VAR value: WORD; bitNo: CARDINAL );
  190.   BEGIN
  191.     ASSEMBLER
  192.         MOVE.W  -(A3),D1
  193.         MOVE.L  -(A3),A0
  194.         CMPI    #15,D1
  195.         BHI     err
  196.         MOVE.W  (A0),D0
  197.         BSET    D1,D0
  198.         MOVE.W  D0,(A0)
  199.       err:
  200.     END
  201.   END WIncl;
  202.  
  203. PROCEDURE LIncl ( VAR value: LONGWORD; bitNo: CARDINAL );
  204.   BEGIN
  205.     ASSEMBLER
  206.         MOVE.W  -(A3),D1
  207.         MOVE.L  -(A3),A0
  208.         CMPI    #31,D1
  209.         BHI     err
  210.         MOVE.L  (A0),D0
  211.         BSET    D1,D0
  212.         MOVE.L  D0,(A0)
  213.       err:
  214.     END
  215.   END LIncl;
  216.  
  217. PROCEDURE BExcl ( VAR value: BYTE; bitNo: CARDINAL );
  218.   BEGIN
  219.     ASSEMBLER
  220.         MOVE.W  -(A3),D1
  221.         MOVE.L  -(A3),A0
  222.         CMPI    #7,D1
  223.         BHI     err
  224.         BCLR    D1,(A0)
  225.       err:
  226.     END
  227.   END BExcl;
  228.  
  229. PROCEDURE WExcl ( VAR value: WORD; bitNo: CARDINAL );
  230.   BEGIN
  231.     ASSEMBLER
  232.         MOVE.W  -(A3),D1
  233.         MOVE.L  -(A3),A0
  234.         CMPI    #15,D1
  235.         BHI     err
  236.         MOVE.W  (A0),D0
  237.         BCLR    D1,D0
  238.         MOVE.W  D0,(A0)
  239.       err:
  240.     END
  241.   END WExcl;
  242.  
  243. PROCEDURE LExcl ( VAR value: LONGWORD; bitNo: CARDINAL );
  244.   BEGIN
  245.     ASSEMBLER
  246.         MOVE.W  -(A3),D1
  247.         MOVE.L  -(A3),A0
  248.         CMPI    #31,D1
  249.         BHI     err
  250.         MOVE.L  (A0),D0
  251.         BCLR    D1,D0
  252.         MOVE.L  D0,(A0)
  253.       err:
  254.     END
  255.   END LExcl;
  256.  
  257. END SysUtil0.
  258. ə
  259. (* $FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$00000BEE$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82$FFFA3C82Ç$00000291T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$0000046A$0000048F$000004F7$00000559$0000050F$00000552$000000B3$0000053D$000000A0$000005EC$0000005A$00000195$000002AB$00000291$FFFC8722$0000094FÕÇÇ*)
  260.